Computers have various forms of memory and storage. Information that is in active use by a processor is commonly held in random-access memory (RAM). In general, the term “random-access memory” (RAM) indicates memory that is comparatively fast, and can be accessed, both for reading and for writing, in the smallest amount that can be addressed by the computer system, commonly individual words or bytes, but that is “volatile,” which is to say that information is retained in the memory only as long as power is supplied to the memory.
Information that is intended to survive an interruption in the power supply, either deliberate, as when a computer is shut down, or undesired, is commonly held in non-volatile storage (NVS). In general, the term “non-volatile storage” indicates storage that retains its contents without requiring a power supply. Non-volatile storage is commonly slower than RAM, and many forms of non-volatile storage are block-accessible. In general, the term “block-accessible” indicates memory or other storage that can be read from and/or written to only in blocks that are large compared with the smallest amount of memory that can be addressed by the computer system.
An example of non-volatile, block-accessible memory is the memory commonly known as “NAND flash memory.” Flash memory comprises devices connected so that they can be set individually, will then retain the set state, and thus the data represented by a pattern of set and unset devices, but can be reset by only in blocks. One common form of flash memory comprises floating gate transistors connected so that they can be set individually by charging the floating gate, will then retain the charge, and thus the data represented by a pattern of set and unset transistors, but can be reset by discharging the floating gate only in blocks. It is physically possible to address NAND flash memory at a byte or word level. However, because of the need for error checking, NAND flash memory is usually configured so that it is written to and read only in pages over which the error correction operates, which may be the same size as, or smaller than, the reset blocks.
In order to reduce the inconvenience of the slow response time of non-volatile storage, it has been proposed to provide non-volatile storage devices, including flash memory, with a RAM cache. However, such storage devices are conventionally configured to be addressed by a processor as if the processor were addressing the non-volatile storage directly. If the non-volatile storage is block-addressable, the entire storage device, including the cache, is addressed in blocks.
In ordinary use of a computer, information that is not being used is commonly kept in files in block-addressable non-volatile storage (BANVS). When a program, or a person operating a program, wishes to use such information, copies of the files are read from the non-volatile storage into RAM. The program directly operating on the information may access the RAM containing the copy files as RAM, byte by byte or word by word, but recognizes that the files are files, and conducts all disk accesses in files or storage blocks. Even where the NVS has a cache consisting physically of RAM, the cache is not accessed by user programs as if it was RAM. The file system managing the NVS manages transfers of files between the user programs and the cache as if the cache is part of the block-addressable NVS.
It has been proposed for system firmware to keep small amounts of important information such as configuration data in non-volatile RAM (NVRAM), for example, battery-backed static RAM. NVRAM can be addressed in small increments like ordinary RAM, retains its contents when the power supply to the computer fails, and is faster than ordinary NVS such as disk drives. Because the NVRAM itself is non-volatile, the data are not copied to block-addressable NVS, and thus are not treated as files or blocks. However, available NVRAM devices are expensive, and the batteries that they require are bulky, in electronic terms. In addition, batteries are considered undesirable in certain applications. Common usage of NVRAM is to store data that is accessed often but does not change frequently.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are intended to provide further explanation of the invention as claimed.